1
תגובות

שאילתה

פתח yehuda4ee ,
יש לי מערכת פורומים ועשיתי שבעמוד הראשי יראו הודעה אחרונה כמו בכל פורום..
הבעיה שאם אני פותח נושא והוא בלי תגובות אז הוא לא מופיע כ"הודעה אחרונה".
הנה השיאלתה:
SELECT posts.date, posts.author AS pauthor, topics.*,
CASE WHEN posts.date > topics.date THEN posts.date
WHEN topics.date > posts.date THEN topics.date
END AS ldate
FROM posts, topics
WHERE topics.id = posts.topic_id AND forum_id=? ORDER BY ldate DESC LIMIT 1

1 תשובות

avatar ענה Splash ב 24 ליוני 2014 #

אתה צריך להשתמש ב JOIN במקרה לטבלה posts ורק במקרה ש posts.date/author/whatever לא שווה ל null אז להציג את posts כהודעה אחרונה אחרת להציג את topic כהודעה אחרונה.
ובנוסף תצטרך לקבץ את הנתונים לפי topic id כאשר התאריך האחרון הוא זה שמוצג.

מאחר ומדובר בשאילתה מאוד בזבזנית הרבה מערכות פורומים שומרות את הנתון הזה בתור מידע טיפש,כלומר יש שדות שנמצאים ב topics שמייצגים את ההודעה האחרונה וברגע שמישהו מוסיף הודעה חדשה אז השורה הזאת מתעדכנת.